The present invention relates to a method and apparatus for processing erasure information in a digital broadcasting system, and in particular, to a method and apparatus for storing and de-interleaving erasure information in a digital video broadcasting (DVB) system.
The MPEG (Motion Pictures Expert Group) standard focuses on the encoding and transport of video and audio data. In general, the MPEG standard uses compression algorithms to reduce the number of bytes to be transmitted and/or stored without noticeably affecting the quality of the original video and audio content.
The International Organization for Standardization (referred to as the ISO/IEC hereinafter) has developed the MPEG-2 standard for the coding of moving pictures and associated audio. The MPEG-2 standard is set forth in four documents. The document ISO/IEC 13818-1 (systems) specifies the system coding of the specification. It defines a multiplexed structure for combining video and audio data and includes timing information necessary to synchronously replay sequences of the video and associated audio. The document ISO/IEC 13818-2 (video) specifies the coded representation of video data and the decoding process required to reconstruct the pictures. The document ISO/IEC 13818-3 (audio) specifies the coded representation of audio data and the decoding process required to reconstruct the sound. And document ISO/IEC 13818-4 (conformance) specifies procedures for determining the characteristics of coded streams and for testing compliance with the requirements set forth in the documents ISO/IEC 13818-1, 13818-2, and 13818-3.
The MPEG-2 standard provides a packet based encoding and transport of multimedia data, wherein video, audio, other data are multiplexed into a bit stream. The bit stream is then segmented into a packetized elementary stream (PES), and then respective packets are multiplexed into either of two distinct streams: a transport stream (TS) or a program stream (PS). A transport stream consists of packets of fixed length (188 bytes) whereas a program stream comprises a multiplex of variable length PES packets. Transport stream is used in the digital video broadcasting (DVB) system whereas program stream is used in error free environments, such as recording programs on digital versatile disc (DVD). The PES is a data structure used to carry elementary stream data. An elementary stream (ES) is either one of coded video, coded audio, or other coded data streams carried in a sequence of PES packets with only one packet identifier (PID).
Transport Stream (TS) packets are used in video broadcasting, where the transmission channel is noisy and facing multiple impairments such as multipath fading, group delay variation, Doppler effect due to a receiver moving in relation to a broadcast station, carrier frequency offset caused by local oscillator drift, carrier phase noise, carrier amplitude imbalance, channel bandwidth aberrations caused by unintentionally filtering, etc.
In contrast to other DVB transmission systems, which are based on the DVB Transport Stream (TS) adopted from the MPEG-2 standard, the DVB-H is the specification for broadcasting services to handheld receivers, and was formally adopted as an ETSI (European Telecommunications Standards Institute) standard in November 2004. More specifically, DVB-H is a digital TV standard for mobile applications that mandates power savings and allows receivers to move freely while receiving services. DVB-H is based on the Internet Protocol (IP). In consequence, the DVB-H baseband interface is an IP interface format. This interface allows the DVB-H system to be combined with other IP-based networks. This combination is one feature of the IP datacast system. The MPEG-2 TS is still used by the link data layer. Encoded multimedia data are mapped into variable length IP packets called IP datagrams. The IP datagrams are encapsulated into the transport stream by means of the multi-protocol encapsulation (MPE), an adaptation protocol defined in the DVB Data Broadcast Specification ETSI EN 301,192.
On the level of the MPE, an additional stage of forward error correction (FEC) is added. This technique, called MPE-FEC, is one of the main innovation of DVB-H. MPE-FEC complements the physical layer FEC of the underlying DVB-T standard. It is intended to lower the signal-to-noise (SNR) requirements for reception by a hand-held device in mobile environment.
The MPE-FC processing is located on the link layer at the level of the JP input streams before they are encapsulated by means of the MPE. FIG. 1A is a block diagram of a DVB-H transmitter including the DVB-H codec that comprises the MPE-FEC, the MPE, and a time slicing technique. The time-slicing technique is a power saving feature of the DVB-H system that assigns transmitted programs in time slices, hence, allows a receiver to be active only at the period of interest to receive a burst of data and then powered down for the rest of power-save period. The IP input streams provided by different sources as individual elementary streams are multiplexed according to the time slicing method. The output of a single MPEG audio or video coder is called an Elementary Stream (ES). The MPE-FEC error protection is calculated separately for each individual elementary stream.
IP diagrams are encapsulated into MPE sections. MPE sections are further protected with a forward error correcting (FEC) code. A Reed-Solomon code RS(255, 191, 64) code is used for data reliability enhancement and forms the FEC sections. The IP input streams provided by different sources as individual elementary streams (ES) are multiplexed according to the time slicing method. Video programs are encoded into MPEG-2 formats, the encoded data are then packetized and multiplexed with the MPE-FEC sections to form transport stream (TS) packets. The DVB-H coder 101 comprises a DVB-T coder and modulator compatible with the DVB-T standard in the physical layer with added support of a 4K mode and transmitter parameter signaling (TPS) for the DVB-H transmission. FIG. 1B shows a prior art block diagram of a DVB-H receiver. The receiver 120 includes DVB-H demodulator 122 that recovers the MPEG-2 transport stream (TS) packets. TS packets 124 are then applied to DVB-H IP-decapsulator 130 that includes time slicing module 134. Timing slicing module 134 controls the receiver to decode the wanted service and shut off during the other services. It aims to reduce receiver power consumption. MPE-FEC module 136 offers a complementary FEC function that allows the receiver 120 to cope with particular difficult reception situations.
A transport stream packet can carry many different programs and each may use a different compression factor and a bit rate that can change dynamically though the overall bit rate stays constant (statistical multiplexing).
The DVB standard specifies that IP datagrams are carried in an MPEG-2 TS through the multiprotocol encapsulation (MPE). FIG. 2 shows that each IP datagram 201 is encapsulated into MPE 210. MPE 210 is in turn encapsulated into MPE sections 232. A stream of MPE sections is then put into an elementary stream (ES), i.e., a stream of MPEG-2 TS packets with a particular program identifier (PID). Each MPE section has a 12-byte header 231, a payload 232, and a 4-byte cyclic redundancy check (CRC-32) tail 233. The total payload length is identical to the length of the IP datagram.
MPE 210 comprises a number of rows 212 and a number of columns 214. The number of columns corresponds to 191 bytes, and the number of rows is equal to 256, 512, 768, or 1024. Each row of 191 bytes is further protected by a Reed-Solomon (RS) code, which produces additionally 64 RS-parity bytes for the MPE-FEC 221. Therefore, the MPE-FEC encoder creates a specific frame structure called the FEC frame, incorporating the IP datagrams 201. The FEC frame consists of a maximum of 1024 rows and a constant number of 255 columns, for a maximum of 261,120 bytes. The MPE data are encapsulated into a number of MPE sections 232, and the RS data are encapsulated into a number of MPE-FEC sections 242. MPE-FEC sections 242 are sent immediately after the last MPE section, in the same ES, but with different table_id than the MPE sections. The use of two different table_ids enables the receiver to discriminate between the two types of sections.
The number of rows in the MPE-FEC frame is signaled in the service information and may take any of the values 256, 512, 768, or 1024. The number of columns is 191 for the application data table (ADT) and 64 for the RS data table 221. The IP datagrams of a particular burst are introduced vertically column-by-column in the ADT, starting at the upper left corner. If an IP datagram does not end exactly at the bottom of a column, the remaining bytes continue from the top of the next column. If the IP datagrams do not exactly fill the ADT, the remaining byte positions are padded with zeroes (zero padding 217). On each row the 64 parity bytes of the RS data table 221 are calculated from the 191 IP datagram bytes (and padding bytes, if application) of the same row, using the Reed-Solomon code RS(255, 191, 64).
Headers 231 of MPE sections 232 and headers 241 of MPE-FEC sections 242 contain a 4-byte real time parameter field, which include a 12-bit start address, which indicates the byte number (counted from the start of the ADT table) of the start position of the corresponding IP datagram or RS column, as well as the 18-bit delta_t parameter and 1-bit table boundary flag and frame boundary flag to signal end-of-table and end-of-frame.
FIG. 3 illustrates multiple transport stream packets 300 of 188 bytes, each packet including a header 301 and a payload 302. Each header 301 includes an eight (8) bit sync byte field 310, a one (1) bit transport error indicator field 311, a one (1) bit payload unit start indicator field 312, a one (1) bit transport priority field 313, a thirteen (13) bit packet identifier field 314, a two (2) bit transport scrambling control field 315, a two (2) bit adaptation field control field 316, a four (4) bit continuity counter field 317, and an optional adaptation field 318. Each of these fields is described in the MPEG-2 standard. For the interest of the reader a short description of each field is given in sections below.
The sync byte 310 has a binary pattern of “01000111” (0×47) and identifies the start of a transport stream (TS) packet. The transport error indicator (TEI) field 311 is set if the error correction layer above the transport layer is experiencing a bit error rate (BER) that is too high to be correctable. When set to ‘1’, TEI may indicate that the packet may contain error. The payload unit start indicator (PUSI) field 312 indicates whether the TS packet carries the start of a new payload (PUSI=“1”) or the TS packet does not carry the start of a new payload (PUSI=“0”). The packet identifier (PID) field 314 indicates the type of data carried in the payload 502. Certain PID values are reserved.
The continuity counter (CC) field 317 counts the number of consecutive TS packets having the same PID field 314 value. The four-bit continuity counter field 317 is used to help with detecting broadcast errors. The counter typically runs from 0 to 0×F and then restarts at 0 again. The next packet in the stream having the same PID will have the continuity counter field incremented by one. In this way the continuity counter runs in a continuous sequence within all packets of the same PID. However, the continuity sequence for packets with a different PID will be different.
All these header fields can be used by a receiver to make a DVB-H reception more robust. The reception can even be made more robust when using an error protection technique. FIG. 4 is a block diagram of a concatenated forward error correcting (FEC) coding scheme used in the DVB-H transmitter. The concatenated FEC includes, in part, an outer FEC coder 410, which is a Reed-Solomon encoder. Source data, consisting of video, audio, and data, is multiplexing into transport stream packets 405. Each packet is 188 bytes long with 184 bytes for data and 4 bytes for header, such as sync, packet ID, transport error indicator (TEI), etc. The FEC outer encoder 410 uses a RS block code (n, k), where n is the block size and k the number of information symbols. The RS encoded symbols is then applied to a block interleaver 412. The purpose of the block interleaver is to spread burst errors across several data packets and improve the BER performance by making it easier for an RS decoder to correct errors. The interleaved and encoded symbols are further passed to an inner FEC encoder 414.
Erasure decoding can improve the error correcting capability compared to decoding without erasure information. For example, an (n, k) RS decoder can correct up to (n−k) erasures when erasure is used, where erasure indicates coded symbol value is in doubt. Any e symbol errors and f erasures can be corrected by erasure decoding provided that f+2e≦n−k. However, when erasure is not used during decoding, up to (n−k)/2 errors can be corrected.
In a DVB-H standard, when a two-stage decoding is used, the first stage is typically adapted to correct up to 8 bytes of errors. The second stage is typically adapted to correct up to 32 bytes of errors when no erasure information is available, and up to 64 bytes of erasures when erasure information is available. The first decoder supplies both the decoded data as well as the erasure information to the second decoder. The first and second decoders may be Reed-Solomon (RS) decoders adapted to decode at different decoding rates. When interleaving is used, a deinterleaver is also used to deinterleave the data decoded by the first decoder. Accordingly, both the data decoded by the first decoder as well as the erasure information are first stored in a memory accessible to the deinterleaver.
Erasure may be detected from various methods. For example, in Digital Video (DVB) systems, erasure may be detected from CRC test for each received IP sections, or from physical layer RS decoder for each received Transmission Stream (TS) packets. In this case, the erasure information is provided per IP section or per TS packets. As described above, erasure information also needs to be deinterleaved unless erasure is detected from deinterleaved symbols.
For a block interleaved coded system, a block deinterleaver may be implemented as a matrix with R number of rows, also known as interleaver depth, and C number of columns, also known as interleaver span. Symbols are filled from the top to the bottom of a column starting from the first column to the next columns. Deinterleaved symbols are read from the first column to the following columns of a row starting from the first row, followed by the succeeding rows. This straightforward and most common implementation requires m×R×C bits of memory space, where m is the number of bits for each symbol, R is the number of rows and C is the number of columns of the block deinterleaver.
When the block interleaver depth and interleaver span are large, the block deinterleaver requires large amount of memory. A need therefore exists for an improved block deinterleaver which requires a smaller amount of memory space.